package com.mvc.demo.validator;

import com.mvc.demo.bean.User;
import org.springframework.util.StringUtils;
import org.springframework.validation.Errors;
import org.springframework.validation.Validator;

/**
 * @author H
 * @date 2023/1/7
 */
public class UserValidator implements Validator {
    @Override
    public boolean supports(Class<?> clazz) {
        return clazz.equals(User.class);
    }

    /**
     * 验证逻辑
     * @param target the object that is to be validated
     * @param errors contextual state about the validation process
     */
    @Override
    public void validate(Object target, Errors errors) {
        if (target == null) {
            // 直接在参数处报错，这样就不能进入控制器的方法
            errors.rejectValue("", null, "用户不能为空");
            return;
        }
        // 强制转换
        User user = (User) target;
        // 用户名非空串
        if (!StringUtils.hasText(user.getUsername())) {
            // 增加错误，可以进入控制器方法
            errors.rejectValue("username", null, "用户名不能为空");
        }
    }
}
